#!/bin/bash


BASEDIR=`pwd`
GRUPO=grupo08
CONFDIR="conf"
COMANDOLOG="./Logging.sh"		#PARA ADAPTAR LOGUEO
LOGEXT=".log"				#PARA ADAPTAR LOGUEO
LOGSIZE=400
SLEEPTIMECONF=60
ACTUAL="./"
DATOSDIR="tp"

MAEDIR="base"
NOVEDIR="flux"
DATASIZE="100"				#ESPACIO LIBRE MINIMO PARA EL ARRIBO DE NOVEDADES en Mbytes
ACEPDIR="ok"
REPODIR="sortie"
RECHDIR="nok"
LOGDIR="log"				
DUPDIR="double"
BINDIR="exec"
DEPLOG="Deployer.log"
DEPCONF="Deployer.conf"
CONFIGTEMP="deployerconf.tmp"

MAEDIRTEMP=""
NOVEDIRTEMP=""
DATASIZETEMP=""
ACEPDIRTEMP=""
REPODIRTEMP=""
RECHDIRTEMP=""
LOGDIRTEMP=""
DUPDIRTEMP=""
BINDIRTEMP=""
LOGSIZETEMP=""
SLEEPTIMECONFTEMP=""
declare -a EXISTENTES
declare -a FALTANTES






function log() {
        command=$1
        message=$2 
        type=$3
        if [ $# -ge 2 ] && [ $# -le 3 ] 
        then
			$COMANDOLOG "$command" "$message" "$type" 
        fi
}

function inicio_Instalacion {
	clear
	echo "Inicio de ejecucion de Deployer"
	log "deployer" "Inicio de ejecucion de deployer"
	echo "Log de la Instalacion: $GRUPO/$CONFDIR/$DEPLOG"
	log "deployer" "Log de la Instalacion: $GRUPO/$CONFDIR/$DEPLOG"
	echo "Directorio predefinido de Configuración: $GRUPO/$CONFDIR"
	log "deployer" "Directorio predefinido de Configuración: $GRUPO/$CONFDIR"
}

function instalacion_Completa {

	MAEDIR=$(grep '^MAEDIR' $BASEDIR/$CONFDIR/$DEPCONF 		| cut -d "=" -f2)
	NOVEDIR=$(grep '^NOVEDIR' $BASEDIR/$CONFDIR/$DEPCONF 		| cut -d "=" -f2)
	ACEPDIR=$(grep '^ACEPDIR' $BASEDIR/$CONFDIR/$DEPCONF 		| cut -d "=" -f2)
	DATASIZE=$(grep '^DATASIZE' $BASEDIR/$CONFDIR/$DEPCONF 		| cut -d "=" -f2)
	REPODIR=$(grep '^REPODIR' $BASEDIR/$CONFDIR/$DEPCONF 		| cut -d "=" -f2)
	RECHDIR=$(grep '^RECHDIR' $BASEDIR/$CONFDIR/$DEPCONF 		| cut -d "=" -f2)
	LOGDIR=$(grep '^LOGDIR' $BASEDIR/$CONFDIR/$DEPCONF 		| cut -d "=" -f2)
	LOGSIZE=$(grep '^LOGSIZE' $BASEDIR/$CONFDIR/$DEPCONF 		| cut -d "=" -f2)
	DUPDIR=$(grep '^DUPDIR' $BASEDIR/$CONFDIR/$DEPCONF 		| cut -d "=" -f2)
	BINDIR=$(grep '^BINDIR' $BASEDIR/$CONFDIR/$DEPCONF 		| cut -d "=" -f2)
	SLEEPTIMECONF=$(grep '^SLEEPTIMECONF' $BASEDIR/$CONFDIR/$DEPCONF 		| cut -d ":" -f2)

	echo -e "TP SO7508 Segundo Cuatrimestre 2014. Tema F Copyright © Grupo 08
		Directorio Configuracion: $GRUPO/$CONFDIR
		`ls  $BASEDIR/$CONFDIR`
		Directorio Datos Maestros y Tablas: $MAEDIR
		`ls  $MAEDIR`
		Directorio Flujo de Novedades: $NOVEDIR
		Directorio Novedades Aceptadas: $ACEPDIR
		Espacio mínimo libre para flujo de novedades: $DATASIZE Mb
		Directorio Pedidos e Informes de Salida: $REPODIR
		Directorio Archivos Rechazados: $RECHDIR
		Directorio de Logs de Comandos: $LOGDIR
		SubDirectorio de Resguardo de Archivos Duplicados: $DUPDIR
		Directorio Ejecutables: $BINDIR
		`ls  $BINDIR`
		Espacio de los logs: $LOGSIZE Kb
		Tiempo de ejecucion del demonio: $SLEEPTIMECONF seg
		Estado de la instalación: COMPLETA
		Proceso de instalación Cancelado"
	log "deployer" "Ya se encuentra completa la instalacion, el proceso fue cancelado" "W"
	exit
}

function obtener_datos_temporales {
	MAEDIRTEMP=$(grep '^MAEDIR' $BASEDIR/$CONFDIR/$CONFIGTEMP 		| cut -d ":" -f2)
	NOVEDIRTEMP=$(grep '^NOVEDIR' $BASEDIR/$CONFDIR/$CONFIGTEMP 	| cut -d ":" -f2)
	ACEPDIRTEMP=$(grep '^ACEPDIR' $BASEDIR/$CONFDIR/$CONFIGTEMP 	| cut -d ":" -f2)
	DATASIZETEMP=$(grep '^DATASIZE' $BASEDIR/$CONFDIR/$CONFIGTEMP 	| cut -d ":" -f2)
	REPODIRTEMP=$(grep '^REPODIR' $BASEDIR/$CONFDIR/$CONFIGTEMP 	| cut -d ":" -f2)
	RECHDIRTEMP=$(grep '^RECHDIR' $BASEDIR/$CONFDIR/$CONFIGTEMP 	| cut -d ":" -f2)
	LOGDIRTEMP=$(grep '^LOGDIR' $BASEDIR/$CONFDIR/$CONFIGTEMP 		| cut -d ":" -f2)
	LOGSIZETEMP=$(grep '^LOGSIZE' $BASEDIR/$CONFDIR/$CONFIGTEMP		| cut -d ":" -f2)
	DUPDIRTEMP=$(grep '^DUPDIR' $BASEDIR/$CONFDIR/$CONFIGTEMP 		| cut -d ":" -f2)
	BINDIRTEMP=$(grep '^BINDIR' $BASEDIR/$CONFDIR/$CONFIGTEMP 		| cut -d ":" -f2)
	SLEEPTIMECONFTEMP=$(grep '^SLEEPTIMECONF' $BASEDIR/$CONFDIR/$CONFIGTEMP 		| cut -d ":" -f2)
}

function busco_existentesyfaltantes {
	
	#declare -a EXISTENTES
	#declare -a FALTANTES

	if [[ -z $MAEDIRTEMP ]]; then
		FALTANTES=( ${FALTANTES[*]} MAEDIR)
	else
		MAEDIR=$MAEDIRTEMP
		EXISTENTES=( ${EXISTENTES[*]} MAEDIR)
	fi
	
	if [[ -z $NOVEDIRTEMP ]]; then
		FALTANTES=( ${FALTANTES[*]} NOVEDIR)
	else
		NOVEDIR=$NOVEDIRTEMP
		EXISTENTES=( ${EXISTENTES[*]} NOVEDIR)
	fi
	
	if [[ -z $ACEPDIRTEMP ]]; then
		FALTANTES=( ${FALTANTES[*]} ACEPDIR)
	else
		ACEPDIR=$ACEPDIRTEMP
		EXISTENTES=( ${EXISTENTES[*]} ACEPDIR)
	fi

	if [[ -z $DATASIZETEMP ]]; then
		FALTANTES=( ${FALTANTES[*]} DATASIZE)
	else
		DATASIZE=$DATASIZETEMP
		EXISTENTES=( ${EXISTENTES[*]} DATASIZE)
	fi
	
	if [[ -z $REPODIRTEMP ]]; then
		FALTANTES=( ${FALTANTES[*]} REPODIR)
	else
		REPOPDIR=$REPODIRTEMP
		EXISTENTES=( ${EXISTENTES[*]} REPODIR)
	fi

	if [[ -z $RECHDIRTEMP ]]; then
		FALTANTES=( ${FALTANTES[*]} RECHDIR)
	else
		RECHDIR=$RECHDIRTEMP
		EXISTENTES=( ${EXISTENTES[*]} RECHDIR)
	fi

	if [[ -z $LOGDIRTEMP ]]; then
		FALTANTES=( ${FALTANTES[*]} LOGDIR)
	else
		LOGDIR=$LOGDIRTEMP
		EXISTENTES=( ${EXISTENTES[*]} LOGDIR)
	fi

	if [[ -z $LOGSIZETEMP ]]; then
		FALTANTES=( ${FALTANTES[*]} LOGSIZE)
	else
		LOGSIZE=$LOGSIZETEMP
		EXISTENTES=( ${EXISTENTES[*]} LOGSIZE)
	fi

	if [[ -z $DUPDIRTEMP ]]; then
		FALTANTES=( ${FALTANTES[*]} DUPDIR)
	else
		DUPDIR=$DUPDIRTEMP
		EXISTENTES=( ${EXISTENTES[*]} DUPDIR)
	fi

	if [[ -z $BINDIRTEMP ]]; then
		FALTANTES=( ${FALTANTES[*]} BINDIR)
	else
		BINDIR=$BINDIRTEMP
		EXISTENTES=( ${EXISTENTES[*]} BINDIR)
	fi

	if [[ -z $SLEEPTIMECONFTEMP ]]; then
		FALTANTES=( ${FALTANTES[*]} SLEEPTIMECONF)
	else
		SLEEPTIMECONF=$SLEEPTIMECONFTEMP
		EXISTENTES=( ${EXISTENTES[*]} SLEEPTIMECONF)
	fi

}

function mostrar_Existentes {
	for ELEMENTO in "${EXISTENTES[@]}"; do
			case $ELEMENTO in
				MAEDIR )
					echo "Directorio Datos Maestros y Tablas: $MAEDIR ";;
				NOVEDIR)
					echo "Directorio Flujo de Novedades: $NOVEDIR";;
				ACEPDIR)
					echo "Directorio Novedades Aceptadas: $ACEPDIR";;
				REPODIR)
					echo "Directorio Pedidos e Informes de Salida: $REPODIR";;
				RECHDIR)
					echo "Directorio Archivos Rechazados: $RECHDIR";;
				LOGDIR)
					echo "Directorio de Logs de Comandos: $LOGDIR";;
				LOGSIZE)
					echo "Tamaño de los Logs: $LOGSIZE Kb ";;
				DUPDIR)
					echo "SubDirectorio de Resguardo de Archivos Duplicados: $DUPDIR";;
				BINDIR)
					echo "Directorio Ejecutables: $BINDIR";;
				DATASIZE)
					echo "Espacio mínimo libre para flujo de novedades: $DATASIZE Mb";;
				SLEEPTIMECONF)
					echo "Tiempo para la ejecucion del demonio: $SLEEPTIMECONF seg";;
			esac
		done
}


function mostrar_Faltantes {

	echo "Listado de elementos Faltantes:"
		for ELEMENTO in "${FALTANTES[@]}"; do
			case $ELEMENTO in
				MAEDIR )
					echo "Directorio Datos Maestros y Tablas 					";;
				NOVEDIR)
					echo "Directorio Flujo de Novedades 						";;
				ACEPDIR)
					echo "Directorio Novedades Aceptadas 						";;
				REPODIR)
					echo "Directorio Pedidos e Informes de Salida 				";;
				RECHDIR)
					echo "Directorio Archivos Rechazados 						";;
				LOGDIR)
					echo "Directorio de Logs de Comandos 						";;
				LOGSIZE)
					echo "Tamaño de los Logs 									";;
				DUPDIR)
					echo "SubDirectorio de Resguardo de Archivos Duplicados 	";;
				BINDIR)
					echo "Directorio Ejecutables 								";;
				DATASIZE)
					echo "Espacio mínimo libre para flujo de Novedades 	 			";;
				SLEEPTIMECONF)
					echo "Tiempo para la ejecucion del demonio					";;
			esac
		done
}

function si_o_no {
	
	RESPUESTA=""
	while [[ -z $RESPUESTA ]]; do
	read RESPUESTA
	RESPUESTA=$(echo $RESPUESTA | grep '^[Ss][Ii]$\|^[Nn][Oo]$' | tr [:lower:] [:upper:])
	done
}

function completar_Faltantes {
	for ELEMENTO in "${FALTANTES[@]}"; do
				case $ELEMENTO in
					MAEDIR )
						echo "Defina directorio para maestros y tablas ($GRUPO/$MAEDIR): "
						read ESPERA
						if [[ ! -z $ENTRADA ]]; then
							MAEDIR=$ENTRADA
						fi
						echo "MAEDIR:$MAEDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
						log "deployer" "El usuario definió $MAEDIR como directorio para maestros y tablas" "I"
						;;
					NOVEDIR)
						echo "Defina el directorio para la ubicacion de novedades ($GRUPO/$NOVEDIR):"
						read ENTRADA
						if [[ ! -z $ENTRADA ]]; then
							NOVEDIR=$ENTRADA
						fi
						echo "NOVEDIR:$NOVEDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP 
						log "deployer" "El usuario definió $NOVEDIR como directorio para ubicacion de novedades" "I"
						;;
					ACEPDIR)
						echo "Defina el directorio para las Novedades aceptadas ($GRUPO/$ACEPDIR):"
						read ENTRADA
						if [[ ! -z $ENTRADA ]]; then
							ACEPDIR=$ENTRADA
						fi
						echo "ACEPDIR:$ACEPDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
						log "deployer" "El usuario definió $ACEPDIR como directorio de input para Cdossier" "I"
						;;
					REPODIR)
						echo "Defina el directorio de grabación de los Pedidos e Informes de Salida ($GRUPO/$REPODIR):"
						read ENTRADA
						if [[ ! -z $ENTRADA ]]; then
							REPODIR=$ENTRADA
						fi
						echo "REPODIR:$REPODIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
						log "deployer" "El usuario definió $REPODIR como directorio de grabacion de los pedidos de informes de salida" "I"
						;;
					RECHDIR)
						echo -e "Defina el directorio de grabación de Archivos rechazados ($GRUPO/$RECHDIR):"
						read ENTRADA
						if [[ ! -z $ENTRADA ]]; then
							RECHDIR=$ENTRADA
						fi
						echo "RECHDIR:$RECHDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
						log "deployer" "El usuario definió $RECHDIR como directorio de Archivos rechazados" "I"
						;;
					LOGDIR)
						echo -e "Defina el directorio de logs ($GRUPO/$LOGDIR):"
						read ESPERA
						if [[ ! -z $ENTRADA ]]; then
							LOGDIR=$ENTRADA
						fi
						echo "LOGDIR:$LOGDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
						log "deployer" "El usuario definió $LOGDIR como directorio de logs" "I"
						;;
					LOGSIZE)
						echo -e "Defina tamaño maximo para logs ($LOGSIZE Kb):"
						read ESPERA
						if [[ ! -z $ENTRADA ]]; then
							LOGSIZE=$ENTRADA
						fi
						echo "LOGSIZE:$LOGSIZE">>$BASEDIR/$CONFDIR/$CONFIGTEMP
						log "deployer" "El usuario definió $LOGSIZE como tamaño para los logs"
						;;
					DUPDIR)
						echo -e "Defina el nombre del SubDirectorio de Resguardo de Archivos Duplicados (/$DUPDIR):"
						read ENTRADA
						if [[ ! -z $ENTRADA ]]; then
							DUPDIR=$ENTRADA
						fi
						echo "DUPDIR:$DUPDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
						log "deployer" "El usuario definió $DUPDIR como directorio de resguardo de archivos duplicados" "I"
						;;
					BINDIR)
						echo "Defina el directorio de instalacion de los ejecutables ($GRUPO/$BINDIR):"
						read ENTRADA
						if [[ ! -z $ENTRADA ]]; then
							BINDIR=$ENTRADA
						fi
						echo "BINDIR:$BINDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
						log "deployer" "El usuario definió $BINDIR como directorio de instalacion de los ejecutables" "I"
						;;
					DATASIZE)
						echo "Defina espacio mínimo libre para el arribo de novedades en Mbytes ($DATASIZE):"
						read ENTRADA
						if [[ ! -z $ENTRADA ]]; then
							DATASIZE=$ENTRADA
						fi
						let DATASIZENUM="$DATASIZE"
						#10. Verificar espacio en disco
						let ESPACIOENNOVEDIR="$(df -k -BM $ACTUAL |  awk '{ print $4}' | sed 's/M//' | sed '/Disponibles/d')"
						while [[ $ESPACIOENNOVEDIR -lt $DATASIZENUM ]]; do
							echo "Insuficiente espacio en disco.
							Espacio disponible: $ESPACIOENNOVEDIR Mb.
							Espacio requerido $DATASIZE Mb
							Cancele la instalación o inténtelo nuevamente."
							echo "Defina espacio mínimo libre para el arribo de novedades en Mbytes ($DATASIZE):"
							read DATASIZE
							let DATASIZENUM="$DATASIZE"
						done
						echo "DATASIZE:$DATASIZE">>$BASEDIR/$CONFDIR/$CONFIGTEMP
						;;
					SLEEPTIMECONF)
						echo "Defina intervalo de tiempo para la ejecucion del demonio ($SLEEPTIMECONF seg):"
						read ENTRADA
						if [[ ! -z $ENTRADA ]]; then
							SLEEPTIMECONF=$ENTRADA
						fi
						echo "SLEEPTIMECONF:$SLEEPTIMECONF">>$BASEDIR/$CONFDIR/$CONFIGTEMP
						log "deployer" "El usuario definio $SLEEPTIMECONF seg como intervalo para la ejecucion del demonio"
						;;
				esac
			done
}

function crear_Directorios {

	echo -e "
				Creando Estructuras de directorio. . . .
				$MAEDIR
				$MAEDIR/soldes
				$MAEDIR/soldes/vieux
				$NOVEDIR
				$ACEPDIR
				$ACEPDIR/proc
				$REPODIR
				$REPODIR/vieux
				$RECHDIR
				$LOGDIR
				$BINDIR"
	
				mkdir -p $BASEDIR/$MAEDIR
				mkdir -p $BASEDIR/$MAEDIR/soldes
				mkdir -p $BASEDIR/$MAEDIR/soldes/vieux
				mkdir -p $BASEDIR/$NOVEDIR
				mkdir -p $BASEDIR/$ACEPDIR
				mkdir -p $BASEDIR/$ACEPDIR/proc
				mkdir -p $BASEDIR/$REPODIR
				mkdir -p $BASEDIR/$REPODIR/vieux
				mkdir -p $BASEDIR/$RECHDIR
				mkdir -p $BASEDIR/$LOGDIR
				mkdir -p $BASEDIR/$BINDIR
				mkdir -p $BASEDIR/$DUPDIR
}


function generar_Configuracion {
				echo "Actualizando la configuracion del sistema"
				rm $BASEDIR/$CONFDIR/$CONFIGTEMP
				touch $BASEDIR/$CONFDIR/$DEPCONF
				FECHA=$(date +'%d-%m-%Y %H:%M:%S')
				echo "GRUPO=$BASEDIR=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "CONFDIR=$BASEDIR/$CONFDIR=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "MAEDIR=$BASEDIR/$MAEDIR=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "NOVEDIR=$BASEDIR/$NOVEDIR=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "ACEPDIR=$BASEDIR/$ACEPDIR=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "DATASIZE=$DATASIZE=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "REPODIR=$BASEDIR/$REPODIR=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "RECHDIR=$BASEDIR/$RECHDIR=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "LOGDIR=$BASEDIR/$LOGDIR=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "LOGSIZE=$LOGSIZE=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "DUPDIR=$BASEDIR/$DUPDIR=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "BINDIR=$BASEDIR/$BINDIR=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "SLEEPTIMECONF=$SLEEPTIMECONF=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
				echo "LOGEXT=$LOGEXT=$USER=$FECHA">>$BASEDIR/$CONFDIR/$DEPCONF
		
}


function concluir {
	echo -e "Instalación CONCLUIDA"
	exit
}


function chequeo_PERL {
	VERSIONPERL=$(perl -v | grep 'v[0-9]\.[0-9]\+\.[0-9]*' -o)
	NUMERODEVERSION=$(echo $VERSIONPERL | cut -d"." -f1 | sed 's/^v\([0-9]\)$/\1/')   
	if [[ -z $NUMERODEVERSION ]] || [[ $NUMERODEVERSION < "5" ]]; then
		echo -e "TP SO7508 Segundo Cuatrimestre 2014. Tema F Copyright © Grupo 08
   		Para instalar el TP es necesario contar con Perl 5 o superior. Efectúe su
 		instalación e inténtelo nuevamente.
 		Proceso de Instalación Cancelado"
 		log "deployer" "No se encontro una version de PERL compatible, instalacion cancelada" "E"
 		exit
	else
		log "deployer" "Se cuenta con la version de PERL N° $NUMERODEVERSION" "I"
		echo  "TP SO7508 Segundo Cuatrimestre 2014. Tema F Copyright © Grupo 08
		Perl Version:  `perl  -v`"
	fi
}

function crear_Temporal {

	if [[ -f $BASEDIR/$CONFDIR/$CONFIGTEMP ]]; then
		rm $BASEDIR/$CONFDIR/$CONFIGTEMP
	fi
	touch $BASEDIR/$CONFDIR/$CONFIGTEMP
}

function pedir_Directorios {
	echo "Defina directorio para maestros y tablas ($GRUPO/$MAEDIR): "
	read ENTRADA
	if [[ ! -z $ENTRADA ]]; then
		MAEDIR=$ENTRADA
	fi
	echo "MAEDIR:$MAEDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
	log "deployer" "El usuario definió $MAEDIR como directorio para maestros y tablas" "I"
	#8. Definir el directorio de input del proceso Recept
	echo "Defina el directorio para la ubicacion de novedades ($GRUPO/$NOVEDIR):"
	read ENTRADA
	if [[ ! -z $ENTRADA ]]; then
		NOVEDIR=$ENTRADA
	fi
	echo "NOVEDIR:$NOVEDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
	log "deployer" "El usuario definió $NOVEDIR como directorio para ubicacion de novedades" "I"
	#9. Definir el espacio mínimo libre para el arribo de novedades en Mbytes:
	echo "Defina espacio mínimo libre para el arribo de novedades en Mbytes ($DATASIZE):"
	read ENTRADA
	if [[ ! -z $ENTRADA ]]; then
		DATASIZE=$ENTRADA
	fi
	let DATASIZENUM="$DATASIZE"
	#10. Verificar espacio en disco
	let ESPACIOENNOVEDIR="$(df -k -BM $ACTUAL |  awk '{ print $4}' | sed 's/M//' | sed '/Disponibles/d')"
	while [[ $ESPACIOENNOVEDIR -lt $DATASIZENUM ]]; do
		clear
		echo "Insuficiente espacio en disco.
		Espacio disponible: $ESPACIOENNOVEDIR Mb.
		Espacio requerido $DATASIZE Mb
		Cancele la instalación o inténtelo nuevamente."
		echo "Defina espacio mínimo libre para el arribo de novedades en Mbytes ($DATASIZE):"
		read DATASIZE
		let DATASIZENUM="$DATASIZE"
	done
	echo "DATASIZE:$DATASIZE">>$BASEDIR/$CONFDIR/$CONFIGTEMP
	log "deployer" "El usuario definió $DATASIZE Mb como espacio libre para arribo de novedades" "I"
	#11. Definir el directorio de input del proceso Cdossier
	echo "Defina el directorio para las Novedades aceptadas ($GRUPO/$ACEPDIR):"
	read ENTRADA
	if [[ ! -z $ENTRADA ]]; then
		ACEPDIR=$ENTRADA
	fi
	echo "ACEPDIR:$ACEPDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
	log "deployer" "El usuario definió $ACEPDIR como directorio de input para Cdossier" "I"
	#12. Definir el directorio de trabajo principal del proceso Liste.
	echo "Defina el directorio de grabación de los Pedidos e Informes de Salida ($GRUPO/$REPODIR):"
	read ENTRADA
	if [[ ! -z $ENTRADA ]]; then
		REPODIR=$ENTRADA
	fi
	echo "REPODIR:$REPODIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
	log "deployer" "El usuario definió $REPODIR como directorio de grabacion de los pedidos de informes de salida" "I"
	#13. Definir repositorio de archivos rechazados
	echo -e "Defina el directorio de grabación de Archivos rechazados ($GRUPO/$RECHDIR):"
	read ENTRADA
	if [[ ! -z $ENTRADA ]]; then
		RECHDIR=$ENTRADA
	fi
	echo "RECHDIR:$RECHDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
	log "deployer" "El usuario definió $RECHDIR como directorio de Archivos rechazados" "I"
	#14. Definir el repositorio de logs
	echo -e "Defina el directorio de logs ($GRUPO/$LOGDIR):"
	read ENTRADA
	if [[ ! -z $ENTRADA ]]; then
		LOGDIR=$ENTRADA
	fi
	echo "LOGDIR:$LOGDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
	log "deployer" "El usuario definió $LOGDIR como directorio de logs" "I"
	echo -e "Defina el tamaño maximo para los logs ($LOGSIZE Kb):"
	read ENTRADA
	if [[ ! -z $ENTRADA ]]; then
		LOGSIZE=$ENTRADA
	fi
	echo "LOGSIZE:$LOGSIZE">>$BASEDIR/$CONFDIR/$CONFIGTEMP
	log "deployer" "El usuario definió $LOGSIZE Kb como tamaño maximo para los logs"
	#15. Definir el subdirectorio destinado al resguardo de archivos duplicados
	echo -e "Defina el nombre del SubDirectorio de Resguardo de Archivos Duplicados (/$DUPDIR):"
	read ENTRADA
	if [[ ! -z $ENTRADA ]]; then
		DUPDIR=$ENTRADA
	fi
	echo "DUPDIR:$DUPDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
	log "deployer" "El usuario definió $DUPDIR como directorio de resguardo de archivos duplicados" "I"
	#16. Definir el directorio de instalación de los ejecutables
	echo "Defina el directorio de instalacion de los ejecutables ($GRUPO/$BINDIR):"
	read ENTRADA
	if [[ ! -z $ENTRADA ]]; then
		BINDIR=$ENTRADA
	fi
	echo "BINDIR:$BINDIR">>$BASEDIR/$CONFDIR/$CONFIGTEMP
	log "deployer" "El usuario definió $BINDIR como directorio de instalacion de los ejecutables" "I"
	echo "Defina el intervalo de tiempo para la ejecucion del demonio ($SLEEPTIMECONF seg):"
	read ENTRADA
	if [[ ! -z $ENTRADA ]]; then
		SLEEPTIMECONF=$ENTRADA
	fi
	echo "SLEEPTIMECONF:$SLEEPTIMECONF">>$BASEDIR/$CONFDIR/$CONFIGTEMP
	log "deployer" "El usuario definio $SLEEPTIMECONF seg como el tiempo para ejecucion del demonio"
}

function confirmar_Inicio {
	RESPUESTA=""
	while [[ -z $RESPUESTA ]]; do
		echo -e "Iniciando Instalación. Esta Ud. seguro? (Si-No)"
		si_o_no
	done
}

function instalacion_Rechazada {
	echo "el usuario rechazo el acuerdo de licencia necesario para realizar la instalacion"
	log "deployer" "El usuario rechazo el acuerdo de licencia necesario, Instalacion cancelada"
	exit

}


function mover_archivos {

	#Mover los archivos maestros y tablas al directorio MAEDIR mostrando el siguiente mensaje
	log "deployer" "Se concluyo la instalacion exitosamente"	
	echo "Instalando Archivos Maestros y Tablas"
	for i in $(ls $BASEDIR/$DATOSDIR)
	 do 
		#$BINDIR/Mover.sh "$DATOSDIR/$i" "$MAEDIR/" "Installer"
		mv "$BASEDIR/$DATOSDIR/$i" "$BASEDIR/$MAEDIR/"
	done	
	
	#Mover los ejecutables y funciones al directorio BINDIR mostrando el siguiente mensaje
	echo "Instalando Programas y Funciones"
	#Muevo el script para mover archivos	
	for i in $(ls *.sh *.pl)
	 do 
		#$BINDIR/Mover.sh "$i" "$BINDIR/" "Installer"
		if [[ "$i" != "Initier.sh" ]] && [[ "$i" != "deployer.sh" ]]; then
		mv "$i" "$BASEDIR/$BINDIR/$i"
		fi
	done	
}



inicio_Instalacion
if [[ -f $BASEDIR/$CONFDIR/$DEPCONF ]]; then
	instalacion_Completa
fi

if [[ -f $BASEDIR/$CONFDIR/$CONFIGTEMP ]]; then
	obtener_datos_temporales
	busco_existentesyfaltantes
	echo "TP SO7508 Segundo Cuatrimestre 2014. Tema F Copyright © Grupo 08
 Directorio Configuracion: $GRUPO/$CONFDIR"
	mostrar_Existentes
	mostrar_Faltantes
	echo "Estado de la instalación: INCOMPLETA
		Desea completar la instalación? (Si-No)"
	si_o_no
	if [[ $RESPUESTA == "NO" ]]; then
		echo "El usuario salio de la instalacion"
		log "deployer" "Existe una instalacion incompleta pero el usuario decidio salir sin completar"
		exit
	else
		if [[ ${#FALTANTES[@]} -ne 0 ]]; then
		completar_Faltantes
		fi
		confirmar_Inicio
		if [[ $RESPUESTA == "NO" ]]; then
				instalacion_Rechazada
		else
			crear_Directorios
			generar_Configuracion
			mover_archivos
			concluir
		fi
	fi
else
	echo -e "TP SO7508 Segundo Cuatrimestre 2014. Tema F Copyright © Grupo 08
		Al instalar TP SO7508 Segundo Cuatrimestre 2014 UD. expresa aceptar
		los términos y condiciones del \"ACUERDO DE LICENCIA DE SOFTWARE\" incluido en
		este paquete. Acepta? Si - No:"
	si_o_no
	if [[ $RESPUESTA == "NO" ]]; then
		echo "el usuario rechazo el acuerdo de licencia necesario para realizar la instalacion"
		log "deployer" "el usuario rechazo el acuerdo de licencia necesario para realizar la instalacion"
		exit
	else
		chequeo_PERL
		RESPUESTA=""
		while [[ $RESPUESTA == "NO" ]] || [[ -z $RESPUESTA ]]; do
			crear_Temporal
			pedir_Directorios
			RESPUESTA=""
			while [[ -z $RESPUESTA  ]]; do
				echo -e "TP SO7508 Segundo Cuatrimestre 2014. Tema F Copyright © Grupo 08
				Directorio Configuracion: $GRUPO/conf
				Directorio Datos Maestros y Tablas: $MAEDIR

				Directorio Flujo de Novedades: $NOVEDIR
				Directorio Novedades Aceptadas: $ACEPDIR
				Espacio mínimo libre para flujo de novedades: $DATASIZE Mb
				Directorio Pedidos e Informes de Salida: $REPODIR
				Directorio Archivos Rechazados: $RECHDIR
				Directorio de Logs de Comandos: $LOGDIR
				Tamaño de los logs: $LOGSIZE Kb
				SubDirectorio de Resguardo de Archivos Duplicados: $DUPDIR
				Directorio Ejecutables: $BINDIR
				Listado de otras variables definidas
				Estado de la instalación: LISTA
				Esta de acuerdo con la eleccion de estos directorios? (Si-No):"
				si_o_no
			done
		done
		confirmar_Inicio
		if [[ $RESPUESTA == "NO" ]]; then
			instalacion_Rechazada
		fi
		crear_Directorios
		generar_Configuracion
		mover_archivos
		concluir
	fi
fi

